package br.rui.incorporacao.visao.servlet;

import java.io.IOException;
import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.rui.incorporacao.dominio.Apartamento;
import br.rui.incorporacao.dominio.DadosContabeis;
import br.rui.incorporacao.dominio.Empreendimento;
import br.rui.incorporacao.dominio.Empresa;
import br.rui.incorporacao.negocio.Fachada;

/**
 * Servlet Class
 *
 * @web.servlet              name="Redirecionar"
 *                           display-name="Name for Redirecionar"
 *                           description="Description for Redirecionar"
 * @web.servlet-mapping      url-pattern="/Redirecionar"
 * @web.servlet-init-param   name="A parameter"
 *                           value="A value"
 */
@SuppressWarnings("serial")
public class RedirecionarServlet extends HttpServlet {

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException,IOException {
		doPost(req, resp);
	}

	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
		throws ServletException,IOException {
		String acao = req.getParameter("acao");
		String url = "";		
		if(acao!=null){
			try {
				if(acao.equalsIgnoreCase("inserirValorRecebido")){
					setRequestDadoContabil(req);
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
				else if(acao.equalsIgnoreCase("editarApartamento")){
					setRequestApartamento(req);
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
				else if(acao.equalsIgnoreCase("inserirCustoMensal")){
					setSessionClientes(req);
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
				else if(acao.equalsIgnoreCase("cadastrarComprador")){
					setSessionClientes(req);
					url = "index.jsp?acao=incorporacao&interna=incorporacao_"+acao;
				}				
				else if(acao.equalsIgnoreCase("BuscaCliente")){					
					url = buscaCliente(req);
				}
				else if(acao.equalsIgnoreCase("cadastrarObra")){
					setRequestClientes(req);
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
				else if(acao.equalsIgnoreCase("consultarObras")){
					setRequestClientes(req);
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
				else if(acao.equalsIgnoreCase("selecionaEmpresa")){
					setSessionClientes(req);					
					HttpSession session = req.getSession(false);
					session.setAttribute("action", "consultarIncorporacao?acao=Empresa&tipoArquivo="+req.getParameter("tipoArquivo"));
					session.setAttribute("pagina","incorporacao_importacaoArquivo");
					url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+acao;
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		req.getRequestDispatcher(url).forward(req,resp);
	}
	
	private String setRequestApartamento(HttpServletRequest req) {
		String url = "", msg = "";
		Apartamento apartamento = null;
		try {
			apartamento = Fachada.recuperarApartamento(Long.parseLong(req.getParameter("apartamentoID")));
		} catch (Exception e) {
			msg = "Erro:" +  e.getMessage();
			req.setAttribute("mensagem", msg);
			url = "index.jsp?acao=incorporacao_empreendimento&interna=mensagens";
			return url;
		}
		req.setAttribute("apartamento", apartamento);
		return url;
		
	}

	private String setRequestDadoContabil(HttpServletRequest req) {
		String url = "", msg = "";
		DadosContabeis dados = null;
		try {
			dados = Fachada.recuperarDadoContabil(Long.parseLong(req.getParameter("dadoContabil")));
		} catch (Exception e) {
			msg = "Erro:" +  e.getMessage();
			req.setAttribute("mensagem", msg);
			url = "index.jsp?acao=incorporacao_empreendimento&interna=mensagens";
			return url;
		}
		req.setAttribute("dadoContabil", dados);
		return url;
	}

	private String setRequestClientes(HttpServletRequest request){
		String url = "", msg = "";
		Collection<Empresa> clientes = null;
		try {
			clientes = Fachada.recuperarClientes();
		} catch (Exception e) {
			msg = "Erro:" +  e.getMessage();
			request.setAttribute("mensagem", msg);
			url = "index.jsp?acao=incorporacao_empreendimento&interna=mensagens";
			return url;
		}
		request.setAttribute("clientes", clientes);
		return url;
	}
	
	private String setSessionClientes(HttpServletRequest request){
		String url = "", msg = "";
		Collection<Empresa> clientes = null;
		try {
			clientes = Fachada.recuperarClientes();
		} catch (Exception e) {
			msg = "Erro:" +  e.getMessage();
			request.setAttribute("mensagem", msg);
			url = "index.jsp?acao=incorporacao_empreendimento&interna=mensagens";
			return url;
		}
		HttpSession session = request.getSession(false);
		session.setAttribute("clientes", clientes);
		return url;
	}
	
	private String buscaCliente(HttpServletRequest req){
		String url = "", msg = "";
		String cnpjEmpresa = req.getParameter("cnpjEmpresa");
		String paginaJsp = req.getParameter("paginaJsp");
		Empresa cliente = null;
		Collection<Empreendimento> empreendimentos = null;
		
		if(cnpjEmpresa!=null){
			try {
				cliente = Fachada.recuperarCliente(cnpjEmpresa);
				empreendimentos = Fachada.recuperarEmpreendimentos(cnpjEmpresa);
			} catch (Exception e) {
				msg = "Erro:" +  e.getMessage();
				req.setAttribute("mensagem", msg);
				url = "index.jsp?acao=incorporacao_empreendimento&interna=mensagens";
				return url;
			}
			req.setAttribute("empreendimentos",empreendimentos);
			req.setAttribute("clienteSelec",cliente);
			url = "index.jsp?acao=incorporacao_empreendimento&interna=incorporacao_"+paginaJsp;
		}
		return url;
	}
}
